การเชื่อมต่อ RDS จาก Amazon Managed Grafana
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
เป้าหมาย
ครั้งนี้เราจะใช้ Amazon Managed Grafana ที่ตั้งค่าด้วย SAML Authentication ของ Auth0 เชื่อมต่อกับ RDS และทดสอบการแสดงผลข้อมูลใน Database ของ RDS ผ่าน Dashboard โดยขั้นตอนที่เกี่ยวกับ AWS ทั้งหมดจะดำเนินการในรีเจี้ยน Tokyo
(ณ วันที่ 23 มกราคม 2023) Amazon Managed Grafana สามารถใช้ฟังก์ชัน VPC ในรีเจี้ยน Singapore ได้แล้ว
เนื่องจากในปัจจุบันนี้ Amazon Managed Grafana ไม่สามารถใช้ฟังก์ชัน VPC ในรีเจี้ยน Singapore ได้ อย่างไรก็ตามผมคิดว่าเราจะสามารถใช้ฟังก์ชัน VPC ในรีเจี้ยน Singapore ได้ในเร็วๆนี้
ในบทความนี้อาจจะมีการย่อคำว่า Amazon Managed Grafana เป็น AMG ในหัวข้อต่อๆไป
สิ่งที่ต้องมี
※สร้างบัญชี Auth0 แล้ว
ดูวิธีการสร้างบัญชี Auth0 ได้ที่ลิงก์ด้านล่างนี้
การเตรียมหน้า AWS Management Console
Login เข้ามาที่หน้า AWS Management Console แล้วเลือกรีเจี้ยน Tokyo
ที่แท็บด้านขวาบน
การสร้าง Security Groups ใน EC2
เข้าไปที่ Service EC2
แล้วเลือก Security Groups
จากเมนูด้านซ้ายในหัวข้อ Network & Security แล้วสร้าง Security Groups ดังนี้
การสร้าง Security Groups สำหรับ Amazon Managed Grafana
คลิก Create security group
แล้วป้อน Security group name และ Description ตามต้องการ เช่น tinnakorn-test-amg
สำหรับ Inbound Rule และ Outbound Rule จะไม่เพิ่มอะไรเข้าไป
ให้เลื่อนลงมาด้านล่างสุด แล้วคลิก Create security group
การสร้าง Security Groups สำหรับ RDS
คลิก Create security group
แล้วป้อน Security group name และ Description ตามต้องการ เช่น tinnakorn-test-rds
แล้วตั้งค่าที่หัวข้อ Inbound rules ดังนี้
คลิก Add rule
แล้วเลือก Type: MYSQL/Aurora
| Source: tinnakorn-test-amg
(Security Group ของ Grafana)
เลื่อนลงมาด้านล่างสุด แล้วคลิก Create security group
การสร้าง RDS
ครั้งนี้จะสร้าง Amazon Aurora ใน Amazon RDS
ก่อนที่จะเริ่มทำการสร้าง Amazon Aurora ให้ตรวจสอบ Region ที่แท็บด้านขวาบนว่าเป็น Tokyo หรือไม่ ถ้าไม่ใช่ให้เปลี่ยนเป็นรีเจี้ยน Tokyo
ดูวิธีการสร้าง Amazon Aurora ได้ที่บทความด้านล่างนี้ (แนะนำให้ดู ตัวอย่างตั้งค่าการสร้าง Amazon Aurora สำหรับ Grafana ของบทความครั้งนี้ ใต้ลิงก์ด้านล่างนี้ประกอบด้วย)
ตัวอย่างตั้งค่าการสร้าง Amazon Aurora สำหรับ Grafana ของบทความครั้งนี้
เลือก Region:
Tokyo
※Create RDS Aurora
Engine options
Engine type:Amazon Aurora
Edition:Amazon Aurora MySQL-Compatible Edition
Available versions:Aurora (MySQL 5.7) 2.07.1
Templates
◎ Production
Settings
DB instance identifier:tinnakorn-test-rds
Credentials Settings
Master username:admin
Master password:PassW0rd
(รหัสผ่านนี้เป็นแค่ตัวอย่าง ให้ตั้งรหัสผ่านที่ต้องการ)
Confirm password:PassW0rd
Instance configuration
DB instance class
◎ Serverless
Serverless v1 ▼
Capacity range
Minimum ACUs:1 ACU
Maximum ACUs:1 ACU
▼ Additional scaling configuration
Autoscaling timeout and action:00:05:00
Pause after inactivity:✅ Scale the capacity to 0 ACUs when cluster is idle
00:30:00
Connectivity
Existing VPC security groups:tinnakorn-test-rds
(เลือก security group ที่เราสร้างสำหรับ Amazon Aurora PostgreSQL)
▼ Additional configuration
Web Service Data API:✅ Data API
การสร้าง Workspace ใน Amazon Managed Grafana
ตรวจสอบ Region ที่แท็บด้านขวาบนว่าเป็น Tokyo หรือไม่ ถ้าไม่ใช่ให้เปลี่ยนเป็นรีเจี้ยน Tokyo
ค้นหา ?︎ Amazon Grafana
แล้วเลือก Amazon Grafana
แล้วทำการตั้งค่าดังนี้
Step 1 - Specify workspace details
หัวข้อ Workspace details
ป้อน Workspace name และ Workspace description ตามต้องการ เช่น tinnakorn-test-amg
แล้วคลิก Next
Step 2 - Configure settings
หัวข้อ Authentication access
Choose at least one authentication method.: ✅
Security Assertion Markup Language (SAML)
หัวข้อ Permission type
⦿ Service managed
หัวข้อ Outbound VPC connection
เลือก VPC ที่ต้องการใช้งาน (ครั้งนี้จะเลือก VPC Default ในรีเจี้ยน Tokyo) แล้วจะมี Mappings และ Security groups ปรากฏขึ้นมา ให้ตั้งค่าดังนี้
Mappings
ติ๊ก ✅ ap-northeast-1d, ap-northeast-1a, ap-northeast-1c และเลือก Subnet ที่มีอยู่ทั้ง 3 ช่อง
Security groups
เลือก Security group ที่สร้างไว้สำหรับ Grafana เช่น tinnakorn-test-amg
จากนั้นเลื่อนลงมาด้านล่างสุด แล้วคลิก Next
Step 3 - Service managed permission settings
ครั้งนี้จะไม่ทำการตั้งค่าใดๆ เพราะเราสามารถตั้งค่าภายหลังได้ ให้เลื่อนลงมาด้านล่างสุด แล้วคลิก Next
Step 4 - Review and create
ตรวจสอบข้อมูลที่ตั้งค่าตั้งแต่ Step 1 - Step 3 แล้วคลิก Create workspace
แล้วรอการเริ่มต้นของ Workspace สักครู่จนกว่าจะแสดงเป็น Status: ✅ Active
ครั้งนี้ใช้เวลาประมาณ 10 นาที
เมื่อสร้าง Workspace ใน Amazon Managed Grafana เสร็จแล้ว ให้เริ่มดำเนินการตามขั้นตอนในลิงก์บทความด้านล่างนี้ ตั้งแต่หัวข้อ การตั้งค่า Workspace ของ Amazon Managed Grafana ใน SAML เป็นต้นไป (สำหรับหัวข้อที่ดำเนินการไปแล้วให้ข้ามไปได้เลย)
การเตรียม Database RDS
การเชื่อมต่อ Aurora Serverless จาก Query Editor
ดูตัวอย่างได้ที่นี่เฉพาะหัวข้อนี้: การเชื่อมต่อ Aurora Serverless จาก Query Editor
การสร้าง Database สำหรับใช้ทดสอบใน Grafana
รันคำสั่งนี้เพื่อสร้าง Database ครั้งนี้ใช้ชื่อว่า grafana
CREATE DATABASE grafana;
เลื่อนลงมาด้านล่างที่หัวข้อ Output จะเห็นว่าสามารถเพิ่ม Database ชื่อ grafana
ได้แล้ว
เมื่อสร้าง Database grafana เสร็จแล้ว เราสามารถ Change database เข้าไปยัง grafana ได้โดยตรงด้วยการคลิก เนื่องจากการ Change database จะทำให้เราสามารถสร้าง Table หรือ Insert ข้อมูลได้โดยไม่ต้องรันคำสั่ง use database_name
ทุกครั้ง
ให้คลิก Change database
ป้อนข้อมูลเชื่อมต่อเข้าไปยัง Database grafana โดยตรงดังนี้:
» Database instance or cluster: tinnakorn-test-rds
(ในส่วนนี้จะถูกเลือกโดยอัตโนมัติ)
» Database username: admin
(เราสามารถเลือก username นี้หลังจากที่มีการเข้าใช้งานไปแล้วได้)
» Database password: หากเลือก username ที่มีการเข้าใช้งานไปแล้ว รหัสผ่านจะป้อนอัตโนมัติ
» Enter the name of the database or schema: grafana
(ชื่อ database ที่สร้างเมื่อสักครู่นี้)
» คลิก Connect to database
หลังจากเปลี่ยน Database เสร็จแล้ว ให้รันคำสั่งสร้าง Table ตามนี้
CREATE TABLE data1 ( id bigint PRIMARY KEY AUTO_INCREMENT, time datetime NOT NULL DEFAULT now(), data int NOT NULL )
เลื่อนลงมาด้านล่างที่หัวข้อ Output จะเห็นว่าสามารถสร้าง Table ที่ชื่อว่า data1
ได้แล้ว
รันคำสั่ง INSERT ข้อมูลลง Table ตามนี้
INSERT INTO data1 (data) values (1);
เลื่อนลงมาด้านล่างที่หัวข้อ Output จะเห็นว่าสามารถ Insert ข้อมูลลงใน Table data1 ได้แล้ว
รันคำสั่ง INSERT ข้อมูลลง Table ตามนี้อีกครั้ง
INSERT INTO data1 (data) values (2);
รันคำสั่งเรียกดูข้อมูลใน Table ตามนี้
SELECT * from data1;
เลื่อนลงมาด้านล่างที่หัวข้อ Result set 1 จะเห็นว่ามีข้อมูลของ Table data1
การเชื่อมต่อ RDS จาก Amazon Grafana
คลิกไอคอนตั้งค่า ⚙
ด้านล่างซ้าย แล้วเลือกแท็บ Data sources
ในหน้า Configuration แล้วคลิก Add data source
ป้อนข้อมูลของ RDS เพื่อให้สามารถเชื่อมต่อจาก Grafana ได้ดังนี้:
MySQL Connection
» Host: tinnakorn-test-rds.cluster-xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
(ป้อน Endpoint ของ RDS)
» Database: grafana
(ป้อน Database ที่สร้างใน Query Editor)
» User: admin
(ป้อน Master username ตามที่ตั้งค่าตอนสร้าง RDS)
» Password: ป้อน Master password ตามที่ตั้งค่าตอนสร้าง RDS
เลื่อนลงมาด้านล่างสุด แล้วคลิก Save & test
แล้วรอสักครู่ ถ้าแสดงข้อความ "✅ Database Connection OK" แบบนี้ถือว่าการเชื่อมต่อสำเร็จ
คลิกไอคอนตั้งค่า ⚙
ด้านล่างซ้าย แล้วเลือกแท็บ Data sources
ในหน้า Configuration อีกครั้ง จะเห็นว่ามี Data source ที่เราบันทึกการเชื่อมต่อไว้แล้ว
การสร้าง Dashboard ใน Grafana
คลิก +
จากเมนูด้านซ้าย แล้วเลือก Add a new panel
ดูที่ด้านล่างซ้าย แล้วตั้งค่าตามนี้
» FROM: data1
(Default)
» Time column: time
(Default)
» SELECT: Column: data
» แล้วคลิก Apply
เมื่อสร้างเสร็จแล้วจะแสดงหน้าจอแบบนี้ เส้นสีเขียวตรงช่วงเวลา 12:30 นี้คือข้อมูลของ ช่วงเวลาที่รันคำสั่งใน Query Editor ตอนแรก
การทดสอบ Dashboard ใน Grafana
เราจะมารันคำสั่งใน Query Editor เพื่อทดสอบการแสดงผลใน Dashboard ใน Grafana
การรันคำสั่งใน Query Editor ของ RDS
กลับมาที่หน้าคอนโซล RDS ใน Query Editor ของเรา แล้วรันคำสั่ง INSERT ข้อมูลลง Table ตามนี้
INSERT INTO data1 (data) values (3);
รันคำสั่ง INSERT ข้อมูลลง Table ตามนี้อีกครั้ง
INSERT INTO data1 (data) values (4);
รันคำสั่งเรียกดูข้อมูลใน Table ตามนี้อีกครั้ง
SELECT * from data1;
การตรวจสอบ Dashboard ใน Grafana
เข้าไปที่หน้าจอ Dashboard ใน Grafana แล้วตั้งค่า quick ranges และเวลาการ Reload ตามต้องการ เช่น:
» เปลี่ยน quick ranges เป็น Last 30 minutes
(ช่วงเวลา 30 นาที)
» เลือกเวลาการ Reload เป็น 5s
(Reload อัตโนมัติทุกๆ 5 วินาที)
ก็จะแสดงหน้าจอแบบนี้ทุกครั้งตามเวลาที่มีการรันคำสั่งใน Query Editor ของ RDS
สรุป
เมื่อทำการเชื่อมต่อ RDS จาก Amazon Managed Grafana เสร็จแล้ว ถ้ามีการดำเนินการใน Query Editor ของ RDS เราก็สามารถตรวจสอบข้อมูลโดยแสดงผลผ่าน Dashboard ของ Grafana ตามเวลาที่ดำเนินการได้อย่างสะดวกและรวดเร็ว
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !